//package cn.stylefeng.guns.modular.wms.service.impl;
//
//import cn.hutool.core.io.FileUtil;
//import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
//import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
//import cn.stylefeng.guns.modular.oss.cloud.OSSFactory;
//import cn.stylefeng.guns.modular.ums.entity.Member;
//import cn.stylefeng.guns.modular.ums.service.MemberService;
//import cn.stylefeng.guns.modular.wms.entity.ResumeFile;
//import cn.stylefeng.guns.modular.wms.mapper.ResumeFileMapper;
//import cn.stylefeng.guns.modular.wms.model.params.ResumeFileParam;
//import cn.stylefeng.guns.modular.wms.model.params.ResumeParam;
//import cn.stylefeng.guns.modular.wms.model.result.ResumeFileResult;
//import cn.stylefeng.guns.modular.wms.model.result.ResumeResult;
//import  cn.stylefeng.guns.modular.wms.service.ResumeFileService;
//import cn.stylefeng.guns.modular.wms.service.ResumeService;
//import cn.stylefeng.guns.utils.MemberTokenUtil;
//import cn.stylefeng.guns.utils.json.ValidatorUtils;
//import cn.stylefeng.guns.utils.pdf.FileInfo;
//import cn.stylefeng.guns.utils.pdf.PdfUtils;
//import cn.stylefeng.guns.utils.word.ExportResumeUtil;
//import cn.stylefeng.roses.core.util.ToolUtil;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import org.aspectj.weaver.MemberUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.web.multipart.MultipartFile;
//import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import java.io.File;
//import java.io.Serializable;
//import java.text.DecimalFormat;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * <p>
// * 简历附件 服务实现类
// * </p>
// *
// * @author yzb
// * @since 2022-05-17
// */
//@Service
//public class ResumeFileServiceImpl extends ServiceImpl<ResumeFileMapper, ResumeFile> implements ResumeFileService {
//
//    @Resource
//    private ResumeService resumeService;
//    @Autowired
//    private FreeMarkerConfigurer configurer;
//    @Resource
//    private MemberService memberService;
//
//    @Transactional
//    @Override
//    public String uploadFile(MultipartFile file) throws Exception {
//        int memberId=MemberTokenUtil.getMemberId();
//        ResumeResult resumeResult=resumeService.getResume(new ResumeParam().setMemberId(memberId));
//        String fileName=resumeResult.getName()+"的简历";
//        //上传文件
//        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//        String url = OSSFactory.build().uploadSuffix(file.getBytes(),fileName,"resume", suffix);
//        //保存到简历附件
//        ResumeFileParam resumeFileParam=new ResumeFileParam();
//        resumeFileParam.setFileExt(suffix.substring(1));
//        resumeFileParam.setFileName(fileName);
//        resumeFileParam.setFileSize(getFileSize(file.getSize()));
//        resumeFileParam.setFileUrl(url);
//        resumeFileParam.setMemberId(memberId);
//        this.add(resumeFileParam);
//        return url;
//    }
//
//    private String getFileSize(long length){
//        double d;
//        DecimalFormat df = new DecimalFormat("#.00");
//        if (1024L <= length && length < 1024 * 1024L) {
//            d = length / 1024.0F;
//            return df.format(d) + "KB";
//        } else if (1024 * 1024L <= length && length < 1024 * 1024 * 1024L) {
//            d = length / (1024 * 1024.0F);
//            return df.format(d) + "MB";
//        } else if (1024 * 1024 * 1024L <= length && length < 1024 * 1024 * 1024 * 1024L) {
//            d = length / (1024 * 1024 * 1024.0F);
//            return df.format(d) + "GB";
//        }
//        return "";
//    }
//
//    @Transactional
//    @Override
//    public String exportWordFile(HttpServletRequest request,ResumeParam resumeParam) throws Exception {
//        ResumeResult resumeResult=resumeService.getResume(resumeParam);
//        // 构造freemarker模板引擎参数,listVars.size()个数对应pdf页数
//        List<Map<String,Object>> listVars = new ArrayList<>();
//        Map<String,Object> variables = new HashMap<>();
//        listVars.add(variables);
//        FileInfo fileInfo=PdfUtils.createPdfFile(configurer,"pdfPage.ftl",listVars,request,resumeResult);
//        //保存到简历附件
//        ResumeFileParam resumeFileParam=new ResumeFileParam();
//        resumeFileParam.setFileExt(fileInfo.getType());
//        resumeFileParam.setFileName(fileInfo.getName());
//        resumeFileParam.setFileSize(fileInfo.getSize());
//        resumeFileParam.setFileUrl(fileInfo.getUrl());
//        resumeFileParam.setMemberId(resumeParam.getMemberId());
//        this.add(resumeFileParam);
//        return fileInfo.getUrl();
//    }
//
//    @Override
//    public void add(ResumeFileParam param){
//        ResumeFile entity = getEntity(param);
//        this.save(entity);
//    }
//
//    @Override
//    public void delete(ResumeFileParam param){
//        this.removeById(getKey(param));
//    }
//
//    @Override
//    public void update(ResumeFileParam param){
//        ResumeFile oldEntity = getOldEntity(param);
//        ResumeFile newEntity = getEntity(param);
//        ToolUtil.copyProperties(newEntity, oldEntity);
//        this.updateById(newEntity);
//    }
//
//    @Override
//    public ResumeFileResult findBySpec(ResumeFileParam param){
//        return null;
//    }
//
//    @Override
//    public List<ResumeFileResult> findListBySpec(ResumeFileParam param){
//        return this.baseMapper.customList(param);
//    }
//
//    @Override
//    public LayuiPageInfo findPageBySpec(ResumeFileParam param){
//        Page pageContext = getPageContext();
//        IPage page = this.baseMapper.customPageList(pageContext, param);
//        return LayuiPageFactory.createPageInfo(page);
//    }
//
//    private Serializable getKey(ResumeFileParam param){
//        return param.getId();
//    }
//
//    private Page getPageContext() {
//        return LayuiPageFactory.defaultPage();
//    }
//
//    private ResumeFile getOldEntity(ResumeFileParam param) {
//        return this.getById(getKey(param));
//    }
//
//    private ResumeFile getEntity(ResumeFileParam param) {
//        ResumeFile entity = new ResumeFile();
//        ToolUtil.copyProperties(param, entity);
//        return entity;
//    }
//
//}
